package com.yesep.learn.design.creational.factory;

import com.yesep.learn.design.common.*;
import com.yesep.learn.design.common.pojo.*;

/**
 * 抽象工厂模式是一种创建型设计模式，它提供了一个接口，允许创建一系列相关或相互依赖的对象，而无需指定它们具体的类。
 * 抽象工厂模式的主要目的是为了提供一个创建一系列相关或相互依赖对象的接口，同时保持高内聚和低耦合。
 * 抽象工厂模式的基本结构如下：
 * Abstract Factory (抽象工厂): 定义一个接口，用于创建一系列相关或相互依赖的对象家族。
 * Concrete Factory (具体工厂): 实现 Abstract Factory 接口中定义的接口，负责创建具体的产品对象。
 * Abstract Product (抽象产品): 定义了属于某个产品系列的接口。
 * Concrete Product (具体产品): 实现了抽象产品的接口，具体产品由具体工厂创建。
 * Client (客户端): 使用 Abstract Factory 创建的对象。
 */
public interface IAnimalAbstractFactory {
    <T extends Animal> T createAnimal(String name, AnimalType animalType) throws Exception;
}
